/**
 * 
 */
package spel;

/**
 * @author Tim
 *
 */
public class SubBord {
	public static final int DIM=3;
	int index;
	Veld velden[][];
	/**
	 * Genereerd een nieuw SubBord
	 * @ensure this.getIndex() == i
	 * @ensure this.getVeld([0..2],[0..2]).getKnikker() == null
	 * @param i De index van het SubBord
	 */
	public SubBord(int i){
		index = i;
		velden = new Veld[DIM][DIM];
		for(int x = 0; x<DIM;x++)
			for(int y =0; y<DIM;y++){
				velden[x][y] = new Veld();
			}
	}
	/**
	 * Returnd een veld van het SubBord
	 * @param x de x positie van het veld
	 * @param y de y positie van het veld
	 * @return Het veld van de postitie, null als de positie buiten het bord valt
	 */
	public Veld getVeld(int x, int y){
		if(x>=0 && x<DIM &&
		   y>=0 && y<DIM){
			return velden[x][y];
		}
		return null;
	}
	/**
	 * returnd de index van het bord
	 * @return de index van het bord
	 */
	public int getIndex(){
		return index;
	}
	/**
	 * Draait alle knikkers in het SubBord rechtsom
	 * @ensure getVeld(0,0).getKnikker() == old.getVeld(0,1).getKnikker() etc.
	 */
	public void draaiRechts(){
		Knikker temp = velden[0][0].getKnikker();
		velden[0][0].setKnikker(velden[0][1].getKnikker());
		velden[0][1].setKnikker(velden[0][2].getKnikker());
		velden[0][2].setKnikker(velden[1][2].getKnikker());
		velden[1][2].setKnikker(velden[2][2].getKnikker());
		velden[2][2].setKnikker(velden[2][1].getKnikker());
		velden[2][1].setKnikker(velden[2][0].getKnikker());
		velden[2][0].setKnikker(velden[1][0].getKnikker());
		velden[1][0].setKnikker(temp);
		
	}
	/**
	 * Draait alle knikkers in het SubBord linksom
	 * @ensure getVeld(0,0).getKnikker() == old.getVeld(1,0).getKnikker() etc.
	 */
	public void draaiLinks(){
		Knikker temp = velden[0][0].getKnikker();
		velden[0][0].setKnikker(velden[1][0].getKnikker());
		velden[1][0].setKnikker(velden[2][0].getKnikker());
		velden[2][0].setKnikker(velden[2][1].getKnikker());
		velden[2][1].setKnikker(velden[2][2].getKnikker());
		velden[2][2].setKnikker(velden[1][2].getKnikker());
		velden[1][2].setKnikker(velden[0][2].getKnikker());
		velden[0][2].setKnikker(velden[0][1].getKnikker());
		velden[0][1].setKnikker(temp);
	}
}
